package com.zmn.oms.persistence.interfaces.conf.reply;

import com.zmn.common.dto.StatusDTO;
import com.zmn.oms.model.entity.conf.reply.ReplyCategory;
import com.zmn.oms.model.entity.conf.reply.ReplyCategoryQuery;

import java.util.List;


/**
 * 描述: 回访内容分类数据库访问
 *
 * @author tanghongjun
 * @since 2020-04-14 11:27:25
 **/
public interface ReplyCategoryDao {
    /**
     * 描述: 根据id查询数据
     *
     * @param categId id
     * @return ReturnVisitCategory
     * @author tanghongjun
     * @since 2020-04-14 11:27:25
     **/
    ReplyCategory findById(Integer categId);

    /**
     * 描述: 统计条数
     *
     * @param query
     * @return Integer
     * @author tanghongjun
     * @since 2020-04-14 11:27:25
     **/
    Integer countByQuery(ReplyCategoryQuery query);

    /**
     * 描述: 按条件查询数据 支持分页
     *
     * @param query 查询对象
     * @return List<ReturnVisitCategory>
     * @author tanghongjun
     * @since 2020-04-14 11:27:25
     **/
    List<ReplyCategory> listPageByQuery(ReplyCategoryQuery query);

    /**
     * 描述: 按条件查询数据 不支持分页
     *
     * @param query 查询对象
     * @author tanghongjun
     * @since 2020-04-14 11:27:25
     **/
    List<ReplyCategory> listByQuery(ReplyCategoryQuery query);

    /**
     * 描述: 根据id修改数据 id为必传
     *
     * @param replyCategory 待修改数据
     * @return java.lang.Integer
     * @author tanghongjun
     * @since 2019/11/12
     **/
    Integer updateCategoryByKey(ReplyCategory replyCategory);

    /**
     * 查询最大的排序
     *
     * @return
     */
    Integer findMaxSort();

    /**
     * 描述: 新增数据
     *
     * @param replyCategory 待新增数据
     * @return java.lang.Integer 主键key
     * @author tanghongjun
     * @since 2019/11/12
     **/
    Integer insert(ReplyCategory replyCategory);

    /**
     * 批量更新状态
     *
     * @param dto 条件
     * @return
     */
    int updateStatusBatch(StatusDTO dto);

    /**
     * 更新排序
     *
     * @param replyCategory 条件
     * @return
     */
    Integer updateSortKey(ReplyCategory replyCategory);

    /**
     * 更新回访内容首字母
     * @param replyCategory
     * @return
     */
    Integer updateFirstLetterByKey(ReplyCategory replyCategory);

}
